In today's increasingly networked computing environments, big and versatile hosted services may include multiple applications and have a large number (e.g., thousands) of active features that are in different stages of deployment. New features are usually gradually enabled and/or introduced to online customers. The process that controls the gradual rollout or deployment is also referred to as a “flight.” Although many features may follow a similar deployment schedule or itinerary, there is no one size fits all approach. This may make it harder to build a flight management system to handle the ever changing requirements, schedules, and itineraries of thousands of features. Conventional deployment systems are managed by developers by manually checking in a configuration file (e.g., one per environment/ring) to gradually rollout the feature.
Some of the challenges with conventional approaches may include, but are not limited to, lack of gradual rollout protection; lack of real ring validation for flight configurations; unreliable flight train delivery and hot synchronization problems; incremental builds of flights not being able to catch basic errors, leading potentially to costly build breaks; lack of proper/full proof build time validation; developer need to manage one initial configuration per environment; user making mistakes in generating initial configurations causing high number of problem escalations; and lack of control of how fast a feature is deployed to environments.